// 放工具类方法
// 1.防抖
export function
// 原理：如果timer有值，就取消它的执行，重新开始计算，当运行到最后一次，timer被取消成为空值时，就会继续执行setTimeout中的代码
// 防抖封装，然后在需要防抖的地方引用
// func代表要执行的函数，delay要等待的时间
debounce(func,delay) {
  let timer = null
  // ...args代表可以传入多个参数
  return function (...args) {
    // clearTimeout()方法可取消setTimeout()的执行。
    // timer在一个闭包中，它对外层的timer进行了引用，所以不会被销毁
    // setTimeout中的函数在下一次事件循环时才进行执行，不写延时时间也是会放到后面执行
    if (timer) clearTimeout(timer)
    timer = setTimeout(() => {
      func.apply(this, args)
    }, delay)
  }
}
// 2.时间格式化
export function formatDate(date, fmt) {
  if (/(y+)/.test(fmt)) {
    fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length));
  }
  let o = {
    'M+': date.getMonth() + 1,
    'd+': date.getDate(),
    'h+': date.getHours(),
    'm+': date.getMinutes(),
    's+': date.getSeconds()
  };
  for (let k in o) {
    if (new RegExp(`(${k})`).test(fmt)) {
      let str = o[k] + '';
      fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? str : padLeftZero(str));
    }
  }
  return fmt;
};
